package com.zpark.entity;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import tk.mybatis.mapper.annotation.KeySql;

import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.io.Serializable;
import java.util.Date;

@Data
@Slf4j
// @Table(name=“tab_user”)，也可以通过name属性指定该实体类对应的表名。
@Table(name = "user")
@ApiModel("用户实体类")
public class User implements Serializable {
    // @Id用来指定Id，这不用多说，其中@KeySql用来获取自增主键。
    @Id
    @KeySql(useGeneratedKeys = true)
    @ApiModelProperty("用户id")
    private Integer id;

    // 指定对应字段  当属性名字与表字段名字一致时可以不适用注解
    @Column(name = "username")
    @ApiModelProperty("用户名字")
    private String username;

    @Column(name = "password")
    @ApiModelProperty("用户密码")
    private String password;

    @Column(name = "sex")
    @ApiModelProperty("用户性别")
    private String sex;

    @Column(name = "language")
    @ApiModelProperty("用户使用的语言")
    private String language;

    @Column(name = "city")
    @ApiModelProperty("用户所在城市")
    private String city;


    // Transient，瞬态的意思，该注解可以忽视Java实体类中的属性，不作为表字段使用
    @Transient
    private Date birthday;
}
